<?php

if (!defined('BASEPATH'))
    exit('No direct script access allowed');

/**
 * @property Doctrine $doctrine Biblioteca ORM
 * Controller para gerenciar projetos
 *
 */
class Relatorio extends AdminController {
    public $relatorios = array( array( 'nome' => 'Relatório de Casos de Testes', 'path' => 'relatoriocasostestes' ) );

    /**
     * Metodo para listar os relatórios
     *
     * @param int $offset Registro inicial
     */
    public function index( $page = 0 ) {
        $lista = $this->relatorios;
        
        $total = count( $lista );

        $this->assign( 'lista', $lista );
        $this->assign( 'total', $total );
        $this->assign( 'suites_testes', $this->doctrine->em->getRepository( 'SuitesTestes' )->findAll() );
        $this->assign( 'projetos', $this->doctrine->em->getRepository( 'Projetos' )->findAll() );

        $this->display( 'relatorio/index' );
    }
    
    public function gerarelatorio() {
        $filename = $this->input->post( 'path' );
        ob_start();
        //echoVarDump($this->input->post());exit;
        $data = $this->input->post();
        if( isNotBlank( $this->input->post( 'id_suite_teste' ) ) ) {
            $dao = $this->doctrine->em->getRepository( 'SuitesTestes' )->find( $this->input->post( 'id_suite_teste' ) );
            $data['suite_teste'] = $dao->get_nome();
        }
        if( isNotBlank( $this->input->post( 'id_projeto' ) ) ) {
            $dao = $this->doctrine->em->getRepository( 'Projetos' )->find( $this->input->post( 'id_projeto' ) );
            $data['projeto'] = $dao->get_nome();
        }
        if( isNotBlank( $this->input->post( 'id_caso_status' ) ) ) {
            switch( $this->input->post( 'id_caso_status' ) ) {
                case 1:
                    $data['caso_status'] = "Passou";
                    break;
                case 2:
                    $data['caso_status'] = "Falhou";
                    break;
                case 3:
                    $data['caso_status'] = "Bloqueado";
                    break;
                case 4:
                default:
                    $data['caso_status'] = "Não Executado";
                    break;
            }
        }
        $data['lista_pdf'] = $this->getCasosTestesToPDF( $this->input->post() );
        //echoVarDump($data);exit;
        // chama a view para armazenar no buffer http://www.gqferreira.com.br/projetos/ver/relatorios-com-php
        $this->load->view( 'admin/relatorio/'.$filename, $data );
        $html = ob_get_clean();

        $this->load->library( 'pdf' );
        $pdf = $this->pdf->load();

        $pdf->SetFooter( $_SERVER['HTTP_HOST'] . '|{PAGENO}|' . date( DATE_RFC822 ) ); // Add a footer for good measure <img src="http://davidsimpson.me/wp-includes/images/smilies/icon_wink.gif" alt=";)" class="wp-smiley lastChild">
        $pdf->WriteHTML( $html ); // write the HTML into the PDF
        $pdf->Output(); // save to file because we can
    }
    
//    public function relatoriocasostestes() {
//        $this->assign( 'lista_pdf', $this->getCasosTestesToPDF() );
//        $this->display( 'relatorio/relatoriocasostestes' );
//    }
    
    //////////////////////////////////////////////////////////////////////////
    
    private function getCasosTestesToPDF( $post ) {
        $sql = "
            SELECT ct.nome, ct.data_criacao, ct.data_execucao, cs.desc_status, coalesce(concat(p.nome, ' ', p.sobrenome), '<center>---</center>') as testador, ct.observacoes, cs.id_caso_status
            FROM casos_testes ct
            LEFT JOIN projetos pr ON pr.id_projeto = ct.id_projeto
            inner join casos_status cs
            on cs.id_caso_status = ct.id_caso_status
            left join usuarios u
            on ct.id_testador = u.id_usuario
            left join pessoas p
            on u.id_pessoa = p.id_pessoa
        ";
        $where = "";
        if( isNotBlank( $post['id_suite_teste'] ) ) {
            $where .= " pr.id_suite_teste = ".$post['id_suite_teste'];
        }
        if( isNotBlank( $post['id_projeto'] ) ) {
            if( isNotBlank( $where ) ) {
                $where .= " AND ";
            }
            $where .= " ct.id_projeto = ".$post['id_projeto'];
        }
        if( isNotBlank( $post['id_caso_status'] ) ) {
            if( isNotBlank( $where ) ) {
                $where .= " AND ";
            }
            $where .= " ct.id_caso_status = ".$post['id_caso_status'];
        }
        if( isNotBlank( $post['data_execucao_inicio'] ) ) {
            if( isNotBlank( $where ) ) {
                $where .= " AND ";
            }
            $where .= " ct.data_execucao >= ".$post['data_execucao_inicio'];
        }
        if( isNotBlank( $post['data_execucao_fim'] ) ) {
            if( isNotBlank( $where ) ) {
                $where .= " AND ";
            }
            $where .= " ct.data_execucao <= ".$post['data_execucao_fim'];
        }
        if( isNotBlank( $where ) ) {
            $sql .= " WHERE ".$where;
        }
        $stmt = $this->doctrine->em->getConnection()->prepare( $sql );
        $stmt->execute();
        return $stmt->fetchAll();
    }
}

/* End of file relatorio.php */
/* Location: ./application/controllers/admin/relatorio.php */